package BancoDados;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import com.mysql.jdbc.DatabaseMetaData;

public class AcessaDB {
	public String getAlias() {
		return alias;
	}

	public void setAlias(String alias) {
		this.alias = alias;
	}

	public Connection getConexao() {
		return conexao;
	}

	public void setConexao(Connection conexao) {
		this.conexao = conexao;
	}

	private String usuario;
	private String senha;
	private String alias;
	private Connection conexao;
	private String endereco;

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public AcessaDB() {

	};

	public AcessaDB(String usuario, String senha, String alias,String endereco) {
		setUsuario(usuario);
		setSenha(senha);
		setAlias(alias);
		setEndereco(endereco);

	};

	public boolean conectar() throws ClassNotFoundException, SQLException {
		Class.forName("com.mysql.jdbc.Driver");
		conexao = DriverManager.getConnection("jdbc:mysql://"+getEndereco()+":3306/"
				+ getAlias(), getUsuario(), getSenha());
		return true;
	};

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public ArrayList<String> montaListaTabelas() throws SQLException {
		ArrayList<String> lista = new ArrayList<String>();
		DatabaseMetaData dbMeta = (DatabaseMetaData) conexao.getMetaData();

		ResultSet rs1 = dbMeta.getTables(getAlias(), null, "", null);

		while (rs1.next()) {
			lista.add(rs1.getString("TABLE_NAME"));
		}

		return lista;
	};

	public ResultSet executaSql(String sql) throws SQLException {

		Statement stm = getConexao().createStatement();
		ResultSet rs = stm.executeQuery(sql);
		return rs;

	}

	public ArrayList<String> retornaColunasTabelas(String tabela)
			throws SQLException {
		ArrayList<String> lista = new ArrayList<String>();
		Statement stm = getConexao().createStatement();
		ResultSet rs = stm.executeQuery(tabela);
		ResultSetMetaData rsMD = rs.getMetaData();
		int qtsCols = rsMD.getColumnCount();
		for (int x = 1; x <= qtsCols; x++) {
			lista.add(rsMD.getColumnName(x));
		}

		return lista;
	}

}
